/* 
  1 用户上滑页面 滚动条触底 开始加载下一页数据
      1 找到滚动条触底事件 开始加载下一页数据
      2 判断还有没有有下一页数据
        1 获取总页数 只有总条数
         总页数=Math.ceil(总条数 / 页容量 pagesize)
         总页数 =Math.ceil(23 / 10 )=3
        2 获取当前的页码 pagenum
        3 判断一下 当前的页码是否大于等于总页数
          表示没有下一页数据
      3 假如没有下一页数据 弹出一个提示
      4 加入还有下一页数据 加载下一页数据
        1 当前页码++
        2 重新发送请求
        3 数据请求回来 要对data中的数组进行 拼接 而不是全部替换掉
  
  2 下拉刷新页面
    1 触发下拉刷新事件 需要在页面的json文件中开启一个配置项
      找到 触发下拉刷新事件的生命周期函数
    2 重置 数据数组
    3 重置页码 设置为1
    4 重新发送请求
    5 数据请求回来 需要手动关闭 等待效果
*/

import {
  request
} from '../../request/index'
// 使用async用到的js
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tabs: [{
        id: 0,
        name: '综合',
        isActive: true
      },
      {
        id: 1,
        name: '销量',
        isActive: false
      },
      {
        id: 2,
        name: '价格',
        isActive: false
      }
    ],
    // 存储商品列表数据
    goodsList: []
  },
  // 请求的接口参数
  queryParams: {
    query: '',
    cid: "",
    pagenum: 1,
    pagesize: 10
  },
  // 总页数
  totalPage: 1,

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.queryParams.cid = options.cid || ""
    this.queryParams.query = options.query || ""
    this.getGoodsList()
  },
  // 点击切换tab激活状态
  handleChangeActive(e) {
    // 获取索引
    let {
      index
    } = e.detail
    let {
      tabs
    } = this.data
    tabs.forEach((v, i) => {
      i === index ? v.isActive = true : v.isActive = false
    })
    this.setData({
      tabs
    })
  },
  // 获取商品列表数据
  async getGoodsList() {
    const res = await request({
      url: '/goods/search',
      data: this.queryParams
    })
    // 计算总页数
    const total = res.data.message.total
    this.totalPage = Math.ceil(total / 10)
    this.setData({
      // 拼接数组
      goodsList: [...this.data.goodsList, ...res.data.message.goods]
    })
    // 关闭下拉刷新的窗口
    wx.stopPullDownRefresh()
  },
  // 页面上滑，滚动条触底事件
  onReachBottom() {
    //  判断有没有下一页数据
    if (this.queryParams.pagenum >= this.totalPage) {
      // 没有下一页数据
      wx.showToast({
        title: '数据已加载完'
      });
    } else {
      // 有下一页数据
      this.queryParams.pagenum++
      this.getGoodsList()
    }
  },
  // 监听用户下拉刷新页面数据
  onPullDownRefresh() {
    // 重置数组
    this.setData({
      goodsList: []
    })
    // 重置页面
    this.queryParams.pagenum = 1
    // 重新发送请求
    this.getGoodsList()
  }
})